// Now validate the form...
מה הקטע? זה לא כאילו שזה מה שקובע שהטופס נשלח מאיפה שהוא היה אמור או משהו כזה (אם זו המטרה)...
17 תשובות
אם זה נשלח זה בטוח שמישהו שלח את הטופס
ואז אפשר להתחיל לבדוק את שאר הדברים...
זה הגיוני שהטופס נשלח אם הכפתור של השליחה גם נשלח, אבל אם אי רוצה להציק אפשר לשלוח רק אותו בלי השדות האחרים. אז עדיף לבדוק את שאר השדות היותר חשובים...
זאת הדרך של ספגטי קידס לבדוק את הmethod של הבקשה, אם אתה רואה מישהו כותב קוד כזה תן לו כפה!
אני מאמין שהרבה מפתחים עומדים מאחורי השורה הזאת אבל אפחד לא רוצה להתבטות בצורה כזאת, ומבחינתי הגיע היום לשבור את הכלים D:
הקטע הוא שאנשים לא מבינים שזה שכפתור אחד נשלח לא אומר שכל שאר השדות נשלחו.
לכן, כשרוצים לבדוק שהטופס נשלח בודקים את כל השדות.
@iiddaannyy
ומה זה משנה עם אתה משתמש בקוד הזה
ורק אם הוא נכון זה מתחיל לבדוק את שאר השדות
כי ברגע שאתה עושה פעולות מסויימות עם המסד וכו' אתה מתחיל לעשות אותם אחרי שמשהו קרה..
אחרי שהמשתמש התחבר, אחרי שהמשתמש נרשם.. ובדרך לוחצים על הSUBMIT בטופס ואז מתחיל רצף הפעולות.
זה משנה.
כי זה שלחצו על כפתור login לא בהכרח אומר ששלחו את השדות username ו-password. וכשתנסה לגשת אליהם מבלי שבדקת האם הם נשלחו (כי בדקת רק את login) תקבל שגיאה.
לא רק, זאת לא צורה לבדוק request method.
יום יבוא ונרצה להוסיף אפשרות לשלוח את הטופס בAJAX (או משהו בסגנון) ואז מה? נצטרך לדחוף איזה שיקוף של קלט (שלא רק שלא עוזר, גם מפריע) לקוד? למה? אפשר לחסוך את כל הבלגן הזה ^^^ אם חושבים קצת קדימה ובודקים את הrequest method לפי ה request method הבנתם? (אני לא)
זהו, שהמונח שבו אתה משתמש, "הטופס נשלח", הוא שגוי לחלוטין. זה שנשלח שדה קלט בשם submit לא בהכרח אומר שזה מאותו טופס שאתה מדבר עליו.
זה אומר שהטופס נשלח.
ואם הטופס באמת נשלח אז בודקים גם עם שאר השדות נשלח...
אני בכלל לא מבין למה צריכים לשלוח את כפתור ה-submit. למה בכלל לתת לו name? למי אכפת ממנו? אתם משתמשים בו בשרת?
נותנים שם רק לשדות שאנחנו רוצים לשלוח והתוכן שלהם מעניין אותנו:
if (isset($_POST['username'], $_POST['password'])) {
...
}
?>
<form action="" method="post">
username: <input tyoe="text" name="username" /><br />
password: <input type="password" name="password" /><br />
<br />
<input type="submit" value="login" />
</form>